# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/29 11:16 
@Author  : ZhangShenao 
@File    : pickle_serialization.py 
@Desc    : 使用Python内置的pickle模块进行序列化与反序列化
"""
import pickle


def serialize():
    """将对象序列化到文件中"""

    # 创建一个对象
    d = {
        'k1': 'v1',
        'k2': 'v2',
    }

    # 序列化的结果是二进制字节
    # 因为要操作二进制内容,所以读写模式为wb,表示二进制
    with open('dump', 'wb') as f:
        # 使用pickle.dumps()函数,将对象序列化到文件中
        pickle.dump(d, f)

    print('序列化完成')


def deserialize():
    """从文件中反序列化对象"""

    # 以二进制形式读取文件
    with open('dump', 'rb') as f:
        # 调用pickle.load()函数,将文件中的内容反序列化为对象
        obj = pickle.load(f)

    print('反序列化完成,结果为:')
    print(f'type of obj is: {type(obj)}, value of obj is: {obj}')


if __name__ == '__main__':
    # 序列化
    serialize()

    # 反序列化
    deserialize()
